#include "client/Rpc_Client.hpp"

void c(const Json::Value &res)
{
    LOG(LogLevel::DEBUG) << "res :" << res.asInt();
}

int main()
{

    xu::client::RpcClient rc(true, "127.0.0.1", 9999);

    for (int i = 0; i < 3; i++)
    {
        // // sleep(1);
        // Json::Value params1;
        // std::future<Json::Value> res;
        // params1["num1"] = 33;
        // params1["num2"] = 22;
        // bool ret = rc.Call("Add", params1, res);
        // if (ret != false)
        // {
        //     //LOG(LogLevel::DEBUG) << "获取异步结果";
        //     if(res.wait_for(std::chrono::seconds(1)) == std::future_status::timeout)
        //         LOG(LogLevel::DEBUG) << "获取异步超时";
        //     else
        //         LOG(LogLevel::DEBUG) << "res :" << res.get().asInt();
        // }

        Json::Value params, result;
        params["num1"] = 11;
        params["num2"] = 22;
        bool ret = rc.Call("Add", params, result);
        if (ret != false)
        {
            LOG(LogLevel::DEBUG) << "res :" << result.asInt();
        }
        sleep(1);
        // Json::Value params2;
        // params2["num1"] = 33;
        // params2["num2"] = 44;
        // bool ret = rc.Call("Add", params2, c);
        //LOG(LogLevel::DEBUG)<<"发完一个数据";
    }

    sleep(10);
    return 0;
}

// void RpcMessageCallback(const xu::BaseConnection::Ptr &bc, xu::BaseMessage::Ptr &mes)
// {
//     std::string body = mes->Serialization();
//     LOG(LogLevel::DEBUG)<<mes->Id() <<" : "<< (int)mes->Mtype()<<" : "<<body;
// }

// int main()
// {
//     xu::BaseClient::Ptr bc = xu::ModuoClientFactory::create("127.0.0.1",9999);
//     bc->SetMessageCallback(RpcMessageCallback);
//     bc->Connect();

//     for(int i = 2; i >0 ; --i)
//     {
//         auto res = xu::MessageFactory::create<xu::RpcRequest>();
//         res->SetId("11111");
//         res->SetMType(xu::MType::REQ_RPC);
//         res->SetMethod("Add");
//         Json::Value val;
//         val["num1"] = 11;
//         val["num2"] = 22;
//         res->SetParams(val);
//         bc->Send(res);
//         sleep(1);
//     }

//     for(int i = 2; i >0 ; --i)
//     {
//         auto res = xu::MessageFactory::create<xu::TopicRequest>();
//         res->SetId("11111");
//         res->SetMType(xu::MType::REQ_TOPIC);
//         res->SetKey("xu");
//         res->SetMsg("xuzhengyou");
//         res->SetOptype(xu::TopicOptype::TOPIC_CREATE);
//         bc->Send(res);
//         sleep(1);
//     }

//     bc->ShutDown();
//     LOG(LogLevel::DEBUG)<<"------------------------------------";
//     sleep(10);
//     return 0;
// }